{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.[enumerate](#1)\n",
    "## 2.[lambda](#2)\n",
    "## 3.[pandas](#3)\n",
    "## 4.[numpy](#4)\n",
    "## 5.[markdown](#5)\n",
    "## 6.[pytorch](#6)\n",
    "## 7.[plot](#7)\n",
    "## L.[其他操作](#last)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import torch\n",
    "from torchviz import make_dot\n",
    "from colorama import Fore, Back\n",
    "import seaborn as sns; sns.set(color_codes=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id =\"1\">1.enumerate</span>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<enumerate object at 0x7fb8538d9c18> <class 'enumerate'>\n"
     ]
    }
   ],
   "source": [
    "#枚举\n",
    "LL = ['a','b','c']\n",
    "aa =  enumerate(LL)\n",
    "print(aa, type(aa))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 a\n",
      "1 b\n",
      "2 c\n"
     ]
    }
   ],
   "source": [
    "for i ,e in enumerate(LL):\n",
    "    print(i,e)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(3, 'a')\n",
      "(4, 'b')\n",
      "(5, 'c')\n"
     ]
    }
   ],
   "source": [
    "for e in enumerate(LL,3):\n",
    "    print(e)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id =\"2\">2.lambda</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 快速构建函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fb8518c00b8>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "epsilon_by_frame = lambda frame_idx:math.exp(-frame_idx/100)\n",
    "plt.plot([epsilon_by_frame(i) for i in range(500)])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 多返回值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2 3\n"
     ]
    }
   ],
   "source": [
    "multi_return_value = lambda a, b :(a+1,b+2)\n",
    "a, b =multi_return_value(1,1)\n",
    "print(a,b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 和map连用快速定义并返回"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1, 8, 27, 64]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L = [1,2,3,4]\n",
    "list(map(lambda x : x**3, L))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 和filter连用进行数据的挑选"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[2, 3, 4]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(filter(lambda x: x>=2, L))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id =\"3\">3.pandas</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* pd.qcut根据值均匀分配将数据分为n个梯度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(-0.001, 1.667], (-0.001, 1.667], (1.667, 3.333], (1.667, 3.333], (3.333, 5.0], (3.333, 5.0]]\n",
       "Categories (3, interval[float64]): [(-0.001, 1.667] < (1.667, 3.333] < (3.333, 5.0]]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.qcut(range(6),3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[good, good, medium, bad, bad]\n",
       "Categories (3, object): [good < medium < bad]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.qcut(range(5), 3, labels=[\"good\", \"medium\", \"bad\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id =\"4\">4.numpy</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* np.random.choice进行选择"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4\n",
      "a\n",
      "b\n"
     ]
    }
   ],
   "source": [
    "# np.random.choice(a,size=None,replace=True,p=None)\n",
    "# a:一维数组(表示在其中选一个)或者int数(表示在[0,i-1]中选一个)\n",
    "# size:int数代表一维数组，也可返回指定大小的多维矩阵\n",
    "# replace=True 表示可能会返回重复的项\n",
    "# p:对a中的每个数设置权重，即被选中的概率\n",
    "print(np.random.choice(range(6)))\n",
    "print(np.random.choice([\"a\",\"b\",\"c\",\"d\"]))\n",
    "print(np.random.choice([\"a\",\"b\",\"c\",\"d\"],p = [0,1,0,0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 图片的numpy和torch.Tensor之间的转化要用到transpose()函数<br>\n",
    "    对于numpy 的图片:H x W x C<br>\n",
    "    对于$\\;$torch$\\;$ 的图片:C x H x W"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id = \"5\">5.markdown</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$${\\max_{a'}}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id='6'>6.pytorch</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* pytorch 使用 **(a)** torch.tensor.item()和 **(b)** torch.tensor.cpu().numpy()的异同<br>\n",
    "    同 : 都是将tensor张量转化为python标量值<br>\n",
    "    异 : (a)只能对单个张量操作 | (b)既可以对单个张量操作也可以对进行数组操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test : tensor(5)\n",
      ".item() : 5\n",
      ".cpu().numpy() : 5\n"
     ]
    }
   ],
   "source": [
    "test = torch.tensor(5)\n",
    "print(\"test :\", test)\n",
    "print(\".item() :\", test.item())\n",
    "print(\".cpu().numpy() :\", test.cpu().numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test : tensor([1, 2])\n",
      ".cpu().numpy() : [1 2]\n",
      "\n",
      "\u001b[37m\u001b[41mValueError: only one element tensors can be converted to Python scalars\n"
     ]
    }
   ],
   "source": [
    "test = torch.tensor([1,2])\n",
    "print(\"test :\", test)\n",
    "print(\".cpu().numpy() :\",test.cpu().numpy())\n",
    "print(\"\")\n",
    "try:\n",
    "    print(\".item() :\", test.item())\n",
    "except ValueError :\n",
    "    print(Fore.WHITE + Back.RED + \"ValueError: only one element tensors can be converted to Python scalars\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* torchviz画图<br>\n",
    "该包有两个方法,make_dot_from_trace和make_dot。感觉我只用到了第一个<br>\n",
    "其中，make_dot(model).render(\"picture\")保存的是pdf文档<br>\n",
    "make_dot(model).render(\"picture\", format=\"png\")保存的是png格式图片和图片信息文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"509pt\" height=\"568pt\"\n",
       " viewBox=\"0.00 0.00 508.50 568.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 564)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-564 504.5,-564 504.5,4 -4,4\"/>\n",
       "<!-- 140429618119680 -->\n",
       "<g id=\"node1\" class=\"node\"><title>140429618119680</title>\n",
       "<polygon fill=\"#caff70\" stroke=\"black\" points=\"197.5,-21 86.5,-21 86.5,-0 197.5,-0 197.5,-21\"/>\n",
       "<text text-anchor=\"middle\" x=\"142\" y=\"-7.4\" font-family=\"Times,serif\" font-size=\"12.00\">MulBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618121360 -->\n",
       "<g id=\"node2\" class=\"node\"><title>140429618121360</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"130,-135 0,-135 0,-114 130,-114 130,-135\"/>\n",
       "<text text-anchor=\"middle\" x=\"65\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\">SigmoidBackward</text>\n",
       "</g>\n",
       "<!-- 140429618121360&#45;&gt;140429618119680 -->\n",
       "<g id=\"edge1\" class=\"edge\"><title>140429618121360&#45;&gt;140429618119680</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.565,-113.951C84.4077,-95.2707 113.04,-53.6238 129.573,-29.5761\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"132.67,-31.2482 135.452,-21.0249 126.902,-27.2825 132.67,-31.2482\"/>\n",
       "</g>\n",
       "<!-- 140429618121472 -->\n",
       "<g id=\"node3\" class=\"node\"><title>140429618121472</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"286,-306 178,-306 178,-285 286,-285 286,-306\"/>\n",
       "<text text-anchor=\"middle\" x=\"232\" y=\"-292.4\" font-family=\"Times,serif\" font-size=\"12.00\">SplitBackward</text>\n",
       "</g>\n",
       "<!-- 140429618121472&#45;&gt;140429618121360 -->\n",
       "<g id=\"edge2\" class=\"edge\"><title>140429618121472&#45;&gt;140429618121360</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M177.796,-291.714C145.823,-287.107 107.199,-275.849 84,-249 58.9316,-219.987 59.422,-172.165 62.128,-145.337\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"65.6229,-145.59 63.3553,-135.241 58.6741,-144.746 65.6229,-145.59\"/>\n",
       "</g>\n",
       "<!-- 140429618122144 -->\n",
       "<g id=\"node16\" class=\"node\"><title>140429618122144</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"223,-249 93,-249 93,-228 223,-228 223,-249\"/>\n",
       "<text text-anchor=\"middle\" x=\"158\" y=\"-235.4\" font-family=\"Times,serif\" font-size=\"12.00\">SigmoidBackward</text>\n",
       "</g>\n",
       "<!-- 140429618121472&#45;&gt;140429618122144 -->\n",
       "<g id=\"edge16\" class=\"edge\"><title>140429618121472&#45;&gt;140429618122144</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M219.11,-284.92C208.209,-276.818 192.363,-265.04 179.538,-255.508\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"181.354,-252.497 171.24,-249.341 177.179,-258.115 181.354,-252.497\"/>\n",
       "</g>\n",
       "<!-- 140429618122648 -->\n",
       "<g id=\"node18\" class=\"node\"><title>140429618122648</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"371,-249 241,-249 241,-228 371,-228 371,-249\"/>\n",
       "<text text-anchor=\"middle\" x=\"306\" y=\"-235.4\" font-family=\"Times,serif\" font-size=\"12.00\">SigmoidBackward</text>\n",
       "</g>\n",
       "<!-- 140429618121472&#45;&gt;140429618122648 -->\n",
       "<g id=\"edge19\" class=\"edge\"><title>140429618121472&#45;&gt;140429618122648</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M244.89,-284.92C255.791,-276.818 271.637,-265.04 284.462,-255.508\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"286.821,-258.115 292.76,-249.341 282.646,-252.497 286.821,-258.115\"/>\n",
       "</g>\n",
       "<!-- 140429618118784 -->\n",
       "<g id=\"node19\" class=\"node\"><title>140429618118784</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"500.5,-249 389.5,-249 389.5,-228 500.5,-228 500.5,-249\"/>\n",
       "<text text-anchor=\"middle\" x=\"445\" y=\"-235.4\" font-family=\"Times,serif\" font-size=\"12.00\">TanhBackward</text>\n",
       "</g>\n",
       "<!-- 140429618121472&#45;&gt;140429618118784 -->\n",
       "<g id=\"edge21\" class=\"edge\"><title>140429618121472&#45;&gt;140429618118784</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M269.102,-284.92C304.88,-275.681 359.167,-261.664 397.962,-251.646\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"399.159,-254.952 407.967,-249.063 397.409,-248.174 399.159,-254.952\"/>\n",
       "</g>\n",
       "<!-- 140429618121640 -->\n",
       "<g id=\"node4\" class=\"node\"><title>140429618121640</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"288.5,-363 175.5,-363 175.5,-342 288.5,-342 288.5,-363\"/>\n",
       "<text text-anchor=\"middle\" x=\"232\" y=\"-349.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618121640&#45;&gt;140429618121472 -->\n",
       "<g id=\"edge3\" class=\"edge\"><title>140429618121640&#45;&gt;140429618121472</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M232,-341.92C232,-334.908 232,-325.144 232,-316.465\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"235.5,-316.341 232,-306.341 228.5,-316.341 235.5,-316.341\"/>\n",
       "</g>\n",
       "<!-- 140429618121696 -->\n",
       "<g id=\"node5\" class=\"node\"><title>140429618121696</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"223,-420 95,-420 95,-399 223,-399 223,-420\"/>\n",
       "<text text-anchor=\"middle\" x=\"159\" y=\"-406.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddmmBackward</text>\n",
       "</g>\n",
       "<!-- 140429618121696&#45;&gt;140429618121640 -->\n",
       "<g id=\"edge4\" class=\"edge\"><title>140429618121696&#45;&gt;140429618121640</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M171.716,-398.92C182.469,-390.818 198.102,-379.04 210.753,-369.508\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"213.058,-372.154 218.939,-363.341 208.846,-366.563 213.058,-372.154\"/>\n",
       "</g>\n",
       "<!-- 140429618121304 -->\n",
       "<g id=\"node6\" class=\"node\"><title>140429618121304</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"109.5,-490 48.5,-490 48.5,-456 109.5,-456 109.5,-490\"/>\n",
       "<text text-anchor=\"middle\" x=\"79\" y=\"-476.4\" font-family=\"Times,serif\" font-size=\"12.00\">bias_ih</text>\n",
       "<text text-anchor=\"middle\" x=\"79\" y=\"-463.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (512)</text>\n",
       "</g>\n",
       "<!-- 140429618121304&#45;&gt;140429618121696 -->\n",
       "<g id=\"edge5\" class=\"edge\"><title>140429618121304&#45;&gt;140429618121696</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M100.019,-455.842C111.94,-446.678 126.788,-435.263 138.605,-426.179\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"140.793,-428.911 146.588,-420.042 136.527,-423.362 140.793,-428.911\"/>\n",
       "</g>\n",
       "<!-- 140429618119960 -->\n",
       "<g id=\"node7\" class=\"node\"><title>140429618119960</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"216,-483.5 128,-483.5 128,-462.5 216,-462.5 216,-483.5\"/>\n",
       "<text text-anchor=\"middle\" x=\"172\" y=\"-469.9\" font-family=\"Times,serif\" font-size=\"12.00\">TBackward</text>\n",
       "</g>\n",
       "<!-- 140429618119960&#45;&gt;140429618121696 -->\n",
       "<g id=\"edge6\" class=\"edge\"><title>140429618119960&#45;&gt;140429618121696</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M169.969,-462.391C168.148,-453.776 165.42,-440.871 163.14,-430.086\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"166.552,-429.305 161.06,-420.245 159.704,-430.753 166.552,-429.305\"/>\n",
       "</g>\n",
       "<!-- 140429618121136 -->\n",
       "<g id=\"node8\" class=\"node\"><title>140429618121136</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"213,-560 131,-560 131,-526 213,-526 213,-560\"/>\n",
       "<text text-anchor=\"middle\" x=\"172\" y=\"-546.4\" font-family=\"Times,serif\" font-size=\"12.00\">weight_ih</text>\n",
       "<text text-anchor=\"middle\" x=\"172\" y=\"-533.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (512, 128)</text>\n",
       "</g>\n",
       "<!-- 140429618121136&#45;&gt;140429618119960 -->\n",
       "<g id=\"edge7\" class=\"edge\"><title>140429618121136&#45;&gt;140429618119960</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M172,-525.885C172,-516.309 172,-504.088 172,-493.912\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"175.5,-493.895 172,-483.895 168.5,-493.895 175.5,-493.895\"/>\n",
       "</g>\n",
       "<!-- 140429618121528 -->\n",
       "<g id=\"node9\" class=\"node\"><title>140429618121528</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"369,-420 241,-420 241,-399 369,-399 369,-420\"/>\n",
       "<text text-anchor=\"middle\" x=\"305\" y=\"-406.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddmmBackward</text>\n",
       "</g>\n",
       "<!-- 140429618121528&#45;&gt;140429618121640 -->\n",
       "<g id=\"edge8\" class=\"edge\"><title>140429618121528&#45;&gt;140429618121640</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M292.284,-398.92C281.531,-390.818 265.898,-379.04 253.247,-369.508\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"255.154,-366.563 245.061,-363.341 250.942,-372.154 255.154,-366.563\"/>\n",
       "</g>\n",
       "<!-- 140429618122088 -->\n",
       "<g id=\"node10\" class=\"node\"><title>140429618122088</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"324.5,-490 259.5,-490 259.5,-456 324.5,-456 324.5,-490\"/>\n",
       "<text text-anchor=\"middle\" x=\"292\" y=\"-476.4\" font-family=\"Times,serif\" font-size=\"12.00\">bias_hh</text>\n",
       "<text text-anchor=\"middle\" x=\"292\" y=\"-463.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (512)</text>\n",
       "</g>\n",
       "<!-- 140429618122088&#45;&gt;140429618121528 -->\n",
       "<g id=\"edge9\" class=\"edge\"><title>140429618122088&#45;&gt;140429618121528</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M295.416,-455.842C297.089,-447.923 299.118,-438.324 300.878,-430.001\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"304.339,-430.55 302.983,-420.042 297.49,-429.102 304.339,-430.55\"/>\n",
       "</g>\n",
       "<!-- 140429618122256 -->\n",
       "<g id=\"node11\" class=\"node\"><title>140429618122256</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"431,-483.5 343,-483.5 343,-462.5 431,-462.5 431,-483.5\"/>\n",
       "<text text-anchor=\"middle\" x=\"387\" y=\"-469.9\" font-family=\"Times,serif\" font-size=\"12.00\">TBackward</text>\n",
       "</g>\n",
       "<!-- 140429618122256&#45;&gt;140429618121528 -->\n",
       "<g id=\"edge10\" class=\"edge\"><title>140429618122256&#45;&gt;140429618121528</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M374.188,-462.391C361.31,-452.732 341.242,-437.681 326.028,-426.271\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"327.823,-423.242 317.723,-420.042 323.623,-428.842 327.823,-423.242\"/>\n",
       "</g>\n",
       "<!-- 140429618119008 -->\n",
       "<g id=\"node12\" class=\"node\"><title>140429618119008</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"428.5,-560 345.5,-560 345.5,-526 428.5,-526 428.5,-560\"/>\n",
       "<text text-anchor=\"middle\" x=\"387\" y=\"-546.4\" font-family=\"Times,serif\" font-size=\"12.00\">weight_hh</text>\n",
       "<text text-anchor=\"middle\" x=\"387\" y=\"-533.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (512, 128)</text>\n",
       "</g>\n",
       "<!-- 140429618119008&#45;&gt;140429618122256 -->\n",
       "<g id=\"edge11\" class=\"edge\"><title>140429618119008&#45;&gt;140429618122256</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M387,-525.885C387,-516.309 387,-504.088 387,-493.912\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"390.5,-493.895 387,-483.895 383.5,-493.895 390.5,-493.895\"/>\n",
       "</g>\n",
       "<!-- 140429618121752 -->\n",
       "<g id=\"node13\" class=\"node\"><title>140429618121752</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"246.5,-78 135.5,-78 135.5,-57 246.5,-57 246.5,-78\"/>\n",
       "<text text-anchor=\"middle\" x=\"191\" y=\"-64.4\" font-family=\"Times,serif\" font-size=\"12.00\">TanhBackward</text>\n",
       "</g>\n",
       "<!-- 140429618121752&#45;&gt;140429618119680 -->\n",
       "<g id=\"edge12\" class=\"edge\"><title>140429618121752&#45;&gt;140429618119680</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M182.465,-56.9197C175.594,-49.2072 165.755,-38.1639 157.5,-28.8978\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"160.033,-26.4792 150.767,-21.3408 154.806,-31.1357 160.033,-26.4792\"/>\n",
       "</g>\n",
       "<!-- 140429618122424 -->\n",
       "<g id=\"node14\" class=\"node\"><title>140429618122424</title>\n",
       "<polygon fill=\"#caff70\" stroke=\"black\" points=\"261.5,-135 148.5,-135 148.5,-114 261.5,-114 261.5,-135\"/>\n",
       "<text text-anchor=\"middle\" x=\"205\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618122424&#45;&gt;140429618121752 -->\n",
       "<g id=\"edge13\" class=\"edge\"><title>140429618122424&#45;&gt;140429618121752</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M202.561,-113.92C200.757,-106.83 198.236,-96.9269 196.009,-88.1763\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"199.364,-87.1684 193.505,-78.3408 192.58,-88.8952 199.364,-87.1684\"/>\n",
       "</g>\n",
       "<!-- 140429618119512 -->\n",
       "<g id=\"node15\" class=\"node\"><title>140429618119512</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"222.5,-192 111.5,-192 111.5,-171 222.5,-171 222.5,-192\"/>\n",
       "<text text-anchor=\"middle\" x=\"167\" y=\"-178.4\" font-family=\"Times,serif\" font-size=\"12.00\">MulBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618119512&#45;&gt;140429618122424 -->\n",
       "<g id=\"edge14\" class=\"edge\"><title>140429618119512&#45;&gt;140429618122424</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M173.619,-170.92C178.786,-163.441 186.117,-152.83 192.394,-143.745\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"195.396,-145.558 198.201,-135.341 189.637,-141.579 195.396,-145.558\"/>\n",
       "</g>\n",
       "<!-- 140429618122144&#45;&gt;140429618119512 -->\n",
       "<g id=\"edge15\" class=\"edge\"><title>140429618122144&#45;&gt;140429618119512</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M159.568,-227.92C160.715,-220.908 162.313,-211.144 163.733,-202.465\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"167.229,-202.775 165.39,-192.341 160.321,-201.644 167.229,-202.775\"/>\n",
       "</g>\n",
       "<!-- 140429618121248 -->\n",
       "<g id=\"node17\" class=\"node\"><title>140429618121248</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"361.5,-192 250.5,-192 250.5,-171 361.5,-171 361.5,-192\"/>\n",
       "<text text-anchor=\"middle\" x=\"306\" y=\"-178.4\" font-family=\"Times,serif\" font-size=\"12.00\">MulBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618121248&#45;&gt;140429618122424 -->\n",
       "<g id=\"edge17\" class=\"edge\"><title>140429618121248&#45;&gt;140429618122424</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M288.407,-170.92C272.717,-162.376 249.521,-149.744 231.571,-139.969\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"233.186,-136.864 222.73,-135.155 229.839,-143.011 233.186,-136.864\"/>\n",
       "</g>\n",
       "<!-- 140429618122648&#45;&gt;140429618121248 -->\n",
       "<g id=\"edge18\" class=\"edge\"><title>140429618122648&#45;&gt;140429618121248</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M306,-227.92C306,-220.908 306,-211.144 306,-202.465\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"309.5,-202.341 306,-192.341 302.5,-202.341 309.5,-202.341\"/>\n",
       "</g>\n",
       "<!-- 140429618118784&#45;&gt;140429618121248 -->\n",
       "<g id=\"edge20\" class=\"edge\"><title>140429618118784&#45;&gt;140429618121248</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M420.788,-227.92C398.403,-219.062 364.915,-205.812 339.878,-195.905\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"340.987,-192.58 330.401,-192.155 338.412,-199.089 340.987,-192.58\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x7fb851810e48>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lstm_cell = torch.nn.LSTMCell(128, 128)\n",
    "x = torch.randn(3, 128)\n",
    "make_dot(lstm_cell(x), params=dict(list(lstm_cell.named_parameters())))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 理解.detach()<br>\n",
    "    1. 简单理解为该tensor的复制，且require_grad = False\n",
    "    2. 通常我们使用到model里输出的量是require_grad = True的，也就是说其包含原始梯度，而这时我们又需要用其计算Loss，此时便需要重置其梯度，使其不受原始梯度的影响。所以.detach()也就起到了重置梯度的作用\n",
    "    3. 下图的演示展示了.detach(),require_grad = False\n",
    "    4. detach()不能乱用，在计算loss function时，根据是不是需要求导(论文中的求导公式)来使用.detach()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x.grad: tensor([5., 5., 5., 5., 5., 5., 5., 5., 5., 5.])\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"252pt\" height=\"214pt\"\n",
       " viewBox=\"0.00 0.00 252.00 214.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 210)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-210 248,-210 248,4 -4,4\"/>\n",
       "<!-- 140429618571808 -->\n",
       "<g id=\"node1\" class=\"node\"><title>140429618571808</title>\n",
       "<polygon fill=\"#caff70\" stroke=\"black\" points=\"178.5,-21 64.5,-21 64.5,-0 178.5,-0 178.5,-21\"/>\n",
       "<text text-anchor=\"middle\" x=\"121.5\" y=\"-7.4\" font-family=\"Times,serif\" font-size=\"12.00\">SumBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618572984 -->\n",
       "<g id=\"node2\" class=\"node\"><title>140429618572984</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"178,-78 65,-78 65,-57 178,-57 178,-78\"/>\n",
       "<text text-anchor=\"middle\" x=\"121.5\" y=\"-64.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618572984&#45;&gt;140429618571808 -->\n",
       "<g id=\"edge1\" class=\"edge\"><title>140429618572984&#45;&gt;140429618571808</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M121.5,-56.9197C121.5,-49.9083 121.5,-40.1442 121.5,-31.4652\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"125,-31.3408 121.5,-21.3408 118,-31.3409 125,-31.3408\"/>\n",
       "</g>\n",
       "<!-- 140429618569904 -->\n",
       "<g id=\"node3\" class=\"node\"><title>140429618569904</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"113,-135 0,-135 0,-114 113,-114 113,-135\"/>\n",
       "<text text-anchor=\"middle\" x=\"56.5\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\">PowBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618569904&#45;&gt;140429618572984 -->\n",
       "<g id=\"edge2\" class=\"edge\"><title>140429618569904&#45;&gt;140429618572984</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M67.8221,-113.92C77.2132,-105.973 90.7827,-94.4916 101.928,-85.0605\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"104.497,-87.4721 109.87,-78.3408 99.9752,-82.1284 104.497,-87.4721\"/>\n",
       "</g>\n",
       "<!-- 140429618572200 -->\n",
       "<g id=\"node4\" class=\"node\"><title>140429618572200</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"148.5,-206 94.5,-206 94.5,-171 148.5,-171 148.5,-206\"/>\n",
       "<text text-anchor=\"middle\" x=\"121.5\" y=\"-178.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (10)</text>\n",
       "</g>\n",
       "<!-- 140429618572200&#45;&gt;140429618569904 -->\n",
       "<g id=\"edge3\" class=\"edge\"><title>140429618572200&#45;&gt;140429618569904</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M104.081,-170.885C94.6799,-161.918 83.1153,-150.887 73.7415,-141.946\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"76.1302,-139.387 66.4783,-135.018 71.2987,-144.453 76.1302,-139.387\"/>\n",
       "</g>\n",
       "<!-- 140429618571024 -->\n",
       "<g id=\"node5\" class=\"node\"><title>140429618571024</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"244,-135 131,-135 131,-114 244,-114 244,-135\"/>\n",
       "<text text-anchor=\"middle\" x=\"187.5\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\">PowBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618572200&#45;&gt;140429618571024 -->\n",
       "<g id=\"edge5\" class=\"edge\"><title>140429618572200&#45;&gt;140429618571024</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M139.187,-170.885C148.733,-161.918 160.475,-150.887 169.993,-141.946\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"172.476,-144.416 177.368,-135.018 167.683,-139.314 172.476,-144.416\"/>\n",
       "</g>\n",
       "<!-- 140429618571024&#45;&gt;140429618572984 -->\n",
       "<g id=\"edge4\" class=\"edge\"><title>140429618571024&#45;&gt;140429618572984</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M176.004,-113.92C166.375,-105.896 152.419,-94.2661 141.04,-84.7837\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"143.232,-82.0539 133.309,-78.3408 138.751,-87.4315 143.232,-82.0539\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x7fb85187e400>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = torch.ones(10, requires_grad=True)\n",
    "y = x**2\n",
    "z = x**3\n",
    "r = (y + z).sum()\n",
    "r.backward()\n",
    "print(\"x.grad:\", x.grad)\n",
    "make_dot(r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x.grad: tensor([2., 2., 2., 2., 2., 2., 2., 2., 2., 2.])\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"122pt\" height=\"214pt\"\n",
       " viewBox=\"0.00 0.00 122.00 214.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 210)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-210 118,-210 118,4 -4,4\"/>\n",
       "<!-- 140429618191328 -->\n",
       "<g id=\"node1\" class=\"node\"><title>140429618191328</title>\n",
       "<polygon fill=\"#caff70\" stroke=\"black\" points=\"114,-21 0,-21 0,-0 114,-0 114,-21\"/>\n",
       "<text text-anchor=\"middle\" x=\"57\" y=\"-7.4\" font-family=\"Times,serif\" font-size=\"12.00\">SumBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618190656 -->\n",
       "<g id=\"node2\" class=\"node\"><title>140429618190656</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"113.5,-78 0.5,-78 0.5,-57 113.5,-57 113.5,-78\"/>\n",
       "<text text-anchor=\"middle\" x=\"57\" y=\"-64.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618190656&#45;&gt;140429618191328 -->\n",
       "<g id=\"edge1\" class=\"edge\"><title>140429618190656&#45;&gt;140429618191328</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57,-56.9197C57,-49.9083 57,-40.1442 57,-31.4652\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"60.5001,-31.3408 57,-21.3408 53.5001,-31.3409 60.5001,-31.3408\"/>\n",
       "</g>\n",
       "<!-- 140429618191104 -->\n",
       "<g id=\"node3\" class=\"node\"><title>140429618191104</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"113.5,-135 0.5,-135 0.5,-114 113.5,-114 113.5,-135\"/>\n",
       "<text text-anchor=\"middle\" x=\"57\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\">PowBackward0</text>\n",
       "</g>\n",
       "<!-- 140429618191104&#45;&gt;140429618190656 -->\n",
       "<g id=\"edge2\" class=\"edge\"><title>140429618191104&#45;&gt;140429618190656</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57,-113.92C57,-106.908 57,-97.1442 57,-88.4652\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"60.5001,-88.3408 57,-78.3408 53.5001,-88.3409 60.5001,-88.3408\"/>\n",
       "</g>\n",
       "<!-- 140429618191832 -->\n",
       "<g id=\"node4\" class=\"node\"><title>140429618191832</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"84,-206 30,-206 30,-171 84,-171 84,-206\"/>\n",
       "<text text-anchor=\"middle\" x=\"57\" y=\"-178.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (10)</text>\n",
       "</g>\n",
       "<!-- 140429618191832&#45;&gt;140429618191104 -->\n",
       "<g id=\"edge3\" class=\"edge\"><title>140429618191832&#45;&gt;140429618191104</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57,-170.885C57,-162.994 57,-153.505 57,-145.248\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"60.5001,-145.018 57,-135.018 53.5001,-145.018 60.5001,-145.018\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x7fb851821c88>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = torch.ones(10, requires_grad=True)\n",
    "y = x**2\n",
    "z = x.detach()**3\n",
    "r = (y + z).sum()\n",
    "r.backward()\n",
    "print(\"x.grad:\", x.grad)\n",
    "make_dot(r)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id = \"last\">plot</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 使用seaborn画出论文里带有置信区间的图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.6/site-packages/IPython/core/interactiveshell.py:3214: FutureWarning: arrays to stack must be passed as a \"sequence\" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.\n",
      "  if (yield from self.run_code(code, result)):\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fb8517e75f8>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_fig = 5\n",
    "start, end = -1, 1\n",
    "x_list_sub = lambda x, y : np.arange(x, y, 0.1)\n",
    "x_list_target = np.stack((x_list_sub(start, end) for _ in range(num_fig)), axis=1).flatten()\n",
    "y_list_target = x_list_target ** 2 + np.random.randn(x_list_target.shape[0]) * 0.2\n",
    "data = pd.DataFrame(data=dict(x=x_list_target, y=y_list_target))\n",
    "sns.lineplot(x=\"x\", y=\"y\", data=data, color=\"g\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id = \"last\">其他操作</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 对axis = 0,或axis = 1 的理解<br>\n",
    "    都表示跨越，0跨行，1跨列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0 1 2]\n",
      " [3 4 5]\n",
      " [6 7 8]]\n"
     ]
    }
   ],
   "source": [
    "a = np.arange(9).reshape(3,3)\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0跨行: [ 9 12 15]\n",
      "1跨列: [ 3 12 21]\n"
     ]
    }
   ],
   "source": [
    "print(\"0跨行:\",a.sum(0))\n",
    "print(\"1跨列:\",a.sum(1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "总和: 36\n"
     ]
    }
   ],
   "source": [
    "print(\"总和:\",a.sum())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 对函数中\\__len__(self)的理解<br>\n",
    "    重写len方法供调用"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3 3\n"
     ]
    }
   ],
   "source": [
    "class Test():\n",
    "    def __init__(self, *num):\n",
    "        self.nums = num\n",
    "    def __len__(self):\n",
    "        return len(self.nums)\n",
    "\n",
    "test = Test(\"A\",\"B\",\"C\")\n",
    "print(len(test),test.__len__())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* \\*args 和 \\*\\*kwargs的异同(some code reference Geeks for Geeks)<br>\n",
    "    都是可变参数的传值，两者都可当正常函数的传值处理<br>\n",
    "    \\*args是不定长的可变参数，而\\*\\*kwargs使用的是类似于元组的key to value的可变参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello\n",
      "Welcome\n",
      "to\n",
      "HHQ'utils\n"
     ]
    }
   ],
   "source": [
    "#对于*args\n",
    "def myFun(*argv): \n",
    "    for arg in argv:\n",
    "        print(arg)\n",
    "        \n",
    "myFun('Hello', 'Welcome', 'to', 'HHQ\\'utils') "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "first == Geeks\n",
      "mid == for\n",
      "last == Geeks\n"
     ]
    }
   ],
   "source": [
    "#对于**kwargs我分为了两种情况:\n",
    "#第一种(定义可变参数函数):\n",
    "def myFun(**kwargs): \n",
    "    for  key, value in kwargs.items():\n",
    "        print(\"%s == %s\"%(key, value))\n",
    "\n",
    "myFun(first ='Geeks', mid ='for', last='Geeks')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the first_list is [1, 2], last_list is [3, 4]\n"
     ]
    }
   ],
   "source": [
    "#第二种(传入可变参数的字典):\n",
    "def myFun(first_list, last_list):\n",
    "    print(\"the first_list is {}, last_list is {}\".format(first_list, last_list))\n",
    "\n",
    "sample = {\"first_list\":[1,2],\"last_list\":[3,4]}\n",
    "myFun(**sample)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 提取list中索引值为奇数或者偶数的数<br>\n",
    "    some_list[start:stop:step]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 2, 4, 6])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.arange(8)[::2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 关于类中方法的错误使用(DDPG 添加Noise的时候发现的)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "class Test:\n",
    "    def __init__(self):\n",
    "        self.state = np.zeros(1)\n",
    "    \n",
    "    def sample_right(self):\n",
    "        self.state = self.state + np.random.randn(1)\n",
    "        return self.state\n",
    "    \n",
    "    def sample_error(self):\n",
    "        self.state += np.random.randn(1)\n",
    "        return self.state\n",
    "\n",
    "plt.figure(figsize=(16, 6))\n",
    "\n",
    "plt.subplot(121)\n",
    "test = Test()\n",
    "right_sample = [test.sample_right() for _ in range(1000)]\n",
    "error_sample = [test.sample_error() for _ in range(1000)]\n",
    "\n",
    "plt.plot(right_sample, label=\"a\")\n",
    "plt.plot(error_sample, label=\"b\")\n",
    "plt.legend()\n",
    "\n",
    "plt.subplot(122)\n",
    "test1 = Test()\n",
    "right_sample = [test1.sample_right()[0] for _ in range(1000)]\n",
    "error_sample = [test1.sample_error()[0] for _ in range(1000)]\n",
    "\n",
    "plt.plot(right_sample, label=\"a\")\n",
    "plt.plot(error_sample, label=\"b\")\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从一个.py文件中引入其中的类使用:<br>\n",
    "from xx import class_name<br>\n",
    "使用import xxx<br>\n",
    "都在__init__()写了东西<br>\n",
    "### 值得去查查"
   ]
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
